package com.qf.producer;

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendCallback;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;

import java.nio.charset.StandardCharsets;

public class ProducerDemo {

//    public static void main(String[] args) throws  Exception {
//        //发送消息的步骤
//        //1.创建消息生产者producer(DefaultMQProducer)，并制定生产者group
//        DefaultMQProducer producer = new DefaultMQProducer("test-group");
//        //2.指定Nameserver地址
//        producer.setNamesrvAddr("localhost:9876");
//        //3.启动producer
//        producer.start();
//        //4.创建Message对象，指定主题Topic、消息体
//        Message message = new Message("test-topic","test-tag","同步消息".getBytes());
//        //5.发送同步消息消息
//        SendResult sendResult = producer.send(message); //阻塞线程（外网）
//        System.out.println(sendResult);
//        //6.关闭生产者producer
//        producer.shutdown();
//    }


    //异步消息
//    public static void main(String[] args) throws  Exception {
//        //发送消息的步骤
//        //1.创建消息生产者producer(DefaultMQProducer)，并制定生产者group
//        DefaultMQProducer producer = new DefaultMQProducer("test-group");
//        //2.指定Nameserver地址
//        producer.setNamesrvAddr("localhost:9876");
//        //3.启动producer
//        producer.start();
//        //4.创建Message对象，指定主题Topic、消息体
//        Message message = new Message("test-topic","test-tag","异步消息".getBytes());
//        //5.发送同步消息消息
//        //SendResult sendResult = producer.send(message); //阻塞线程（外网）
//        producer.send(message, new SendCallback() { //消息发送的异步回调,不会阻塞线程
//            @Override
//            public void onSuccess(SendResult sendResult) {
//                System.out.println(sendResult);
//                //6.关闭生产者producer
//                producer.shutdown();
//            }
//
//            @Override
//            public void onException(Throwable throwable) {
//                System.out.println("消息发送失败");
//                //6.关闭生产者producer
//                producer.shutdown();
//            }
//        });
//
//    }

    //单向消息
        public static void main(String[] args) throws  Exception {
        //发送消息的步骤
        //1.创建消息生产者producer(DefaultMQProducer)，并制定生产者group
        DefaultMQProducer producer = new DefaultMQProducer("test-group");
        //2.指定Nameserver地址
        producer.setNamesrvAddr("localhost:9876");
        //3.启动producer
        producer.start();
        //4.创建Message对象，指定主题Topic、消息体
        Message message = new Message("test-topic","test-tag","单向消息".getBytes());
        //5.发送同步消息消息
        producer.sendOneway(message);
        //6.关闭生产者producer
        //producer.shutdown();
    }
}
